#include "../Include/main.h"
#include "../Include/student.h"
int n=0;
int m;
void seek() //查找
{
	int i,item,flag;
	char s1[20];
	printf("-----1.按学号查询-----\n");
	printf("-----2.按姓名查询-----\n");
	printf("-----3.退出本菜单-----\n");
	while(1)
	{
	printf("请选择子菜单编号:");
	scanf("%d",&item);
	flag=0;
	switch(item)
	{
		case 1:
		printf("请输入要查询的学生的学号:\n");
		scanf("%s",&s1);//存放输入的字符串
		getchar();
		for(i=0;i<n;i++)
		if(strcmp(students[i].code,s1)==0)//验证俩个字符串是否相等
		{
			flag=1;//判断是否找到该学生
			printf("学号\t\t姓名\t已选课程 \t学分\n");
			printf("-------------------------------------------------\n");
			printf("%s\t\t%s\t%s\t\t%s\n",students[i].code,students[i].name,students[i].myproject,students[i].score);
		}
		if(flag==0)
		printf("该学号不存在！\n");
		break;
		case 2:
		printf("请输入要查询的学生的姓名:\n");
		scanf("%s",&s1);
		for(i=0;i<n;i++)
		if(strcmp(students[i].name,s1)==0)//验证俩个字符串是否相等
		{
			flag=1;//判断是否找到该学生
			printf("学号\t\t姓名\t已选课程 \t学分\n");
			printf("-------------------------------------------------\n");
			printf("%s\t\t%s\t%s\t\t%s\n",students[i].code,students[i].name,students[i].myproject,students[i].score);
		}
		if(flag==0)
		printf("该姓名不存在！\n");
		break;
		case 3:return;
		default:printf("请在1-3之间选择\n");
	}
	}
}

void modify() //按学号修改信息
{
	int i,item,num;
	int a;
	char s1[LEN+1],s2[LEN+1],s3[LEN+1],s4[LEN+1]; // 以最长长度+1为准
	
	printf("请输入要要修改的学生的学号:\n");
	scanf("%s",s1);
	for(i=0;i<n;i++)
	if(strcmp(students[i].code,s1)==0) //比较字符串是否相等
	{
		num=i;
		printf("------------------\n");
		printf("1.修改姓名\n");
		printf("2.修改已选课程\n");
		printf("3.修改学分\n");
		printf("4.退出本菜单\n");
		printf("------------------\n");
		while(1)
		{
			printf("请选择子菜单编号:");
			scanf("%d",&item);
			switch(item)
			{
				case 1:
				printf("请输入新的姓名:\n");
				scanf("%s",s2);
				strcpy(students[num].name,s2); break;//将s2的值赋给students[num].name
				case 2:
				printf("请输入新的已选课程:\n");
				scanf("%s",s3);
				strcpy(students[num].myproject,s3);break;
				case 3:
				printf("请输入新的学分:\n");
				scanf("%s",s4);
				strcpy(students[num].score,s4);break;
				case 4: return;
				default:printf("请在1-4之间选择\n");
			}
		}
	}
	
}

void sort()//按学号排序
{
	int i,j,k,*p,*q,s;
	char temp[LEN+1],ctemp[20];
	//float ftemp;
	for(i=0;i<n-1;i++)
	{
		for(j=n-1;j>i;j--)
		if(strcmp(students[j-1].code,students[j].code)>0)
		{
			strcpy(temp,students[j-1].code);
			strcpy(students[j-1].code,students[j].code);
			strcpy(students[j].code,temp);
			
			strcpy(temp,students[j-1].name);
			strcpy(students[j-1].name,students[j].name);
			strcpy(students[j].name,temp);
			
			strcpy(temp,students[j-1].myproject);
			strcpy(students[j-1].myproject,students[j].myproject);
			strcpy(students[j].myproject,temp);
			
			strcpy(temp,students[j-1].score);
			strcpy(students[j-1].score,students[j].score);
			strcpy(students[j].score,temp);

		}
	}
}

void insert() //增加信息
{
	int j;
	printf("请输入待增加的学生数:\n");
	scanf("%d",&m);//记录学生数量增加的个数
	for(j=n;j<n+m;j++)//开始增加学生
	{
		printf("请输入第%d 个学生的学号:\n",j+1);
		scanf("%s",&students[j].code);
		printf("请输入第%d 个学生的姓名:\n",j+1);
		scanf("%s",&students[j].name);
		printf("请输入第%d 个学生的已选课程:\n",j+1);
		scanf("%s",&students[j].myproject);
		printf("请输入第%d 个学生的学分:\n",j+1);
		scanf("%s",&students[j].score);
	}
	n+=m;//学生总数加m
	printf("信息增加完毕！\n\n");
	sort();
}

void del()//删除信息
{
	int i,j,flag=0;
	char s1[LEN+1];
	printf("请输入要删除学生的姓名:\n");
	scanf("%s",s1);
	for(i=0;i<n;i++)
	if(strcmp(students[i].name,s1)==0)//判断俩个字符串是否相等
	{
		flag=1;//是否找到该学生的标志
		for(j=i;j<n-1;j++)
		{
			strcpy(students[j].code,students[j+1].code);//将学生数组中每一个元素向前移一位
			strcpy(students[j].name,students[j+1].name);
			strcpy(students[j].myproject,students[j+1].myproject);
			strcpy(students[j].score,students[j+1].score);
			
		}
	}
	if(flag==0)
		printf("该学生不存在！\n");
	if(flag==1)
	{
		printf("删除成功,显示结果请选择菜单\n");
		n--;//学生数量减1
	}
	printf("退出请按0\n");
	int a;
	scanf("%d",&a);
	switch(a)
	{
		case 0:
		return;//退出
		default:
		printf("输入错误！");
	}
}

void display()//显示所有信息
{
	int i;
	printf("共有%d位学生的信息:\n",n);
	if(n!=0)//判断学生数量是否为空值
	{	
		printf("学号\t\t姓名\t已选课程 \t学分\n");
		printf("-------------------------------------------------\n");
		sort();
		for(i=0;i<n;i++)
		{
			printf("%s\t\t%s\t%s\t\t%s\n",students[i].code,students[i].name,students[i].myproject,students[i].score);
		}
	}
	else//n=0,表示无学生信息
	{
		printf("暂无学生信息\n");
	}
	printf("退出请按0\n");
	int a;
	scanf("%d",&a);
	if(a==0)
	return;
}

void stutable()
{
	FILE *fp = fopen("/home/wxy/MyProject/my-project/ModuleA/stu.txt","r");
	if(fp==NULL){
		fprintf(stderr,"文件打开失败。\n");
		exit(EXIT_FAILURE);
	}
	char row[1000];
	char *token;
	int i=0;
	if(fgets(row, 1000, fp)!=NULL){
		while(fgets(row,1000,fp)!=NULL){
            sscanf(row,"%s%s%s%s",students[i].code,students[i].name,students[i].myproject,students[i].score);
			printf(fp,"%s\t\t%s\t%s\t\t%s\n",students[i].code,students[i].name,students[i].myproject,students[i].score);
			i++;
			n++;
		}
	}
}

void save()//保存信息
{
        printf("读入文档保存请按1\n");
        printf("直接保存请按2\n");
        int a;
        scanf("%d",&a);
        if(a==1){
        FILE *fp;
	fp= fopen("/home/wxy/MyProject/my-project/ModuleA/stu.txt","w");//打开文档，写入
	fprintf(fp,"学号\t\t姓名\t已选课程 \t学分\n");
	for(int i=0;i<n;i++)
	{
		fprintf(fp,"%s\t\t%s\t%s\t\t%s\n",students[i].code,students[i].name,students[i].myproject,students[i].score);
	}
	fclose(fp);
	}else if(a==2)
	{
	FILE *fp;
	fp= fopen("/home/wxy/MyProject/my-project/ModuleA/stu.txt","a");//打开文档，写入
	for(int i=0;i<n;i++)
	{
		fprintf(fp,"%s\t\t%s\t%s\t\t%s\n",students[i].code,students[i].name,students[i].myproject,students[i].score);
	}
	fclose(fp);
	}
}

void help()//帮助
{
	while(1)
	{
		printf("\n0.欢迎使用系统帮助！\n");
		printf("\n1.初次进入系统后,请先选择增加学生信息;\n");
		printf("\n2.按照菜单提示键入数字代号;\n");
		printf("\n3.增加学生信息后,切记保存;\n");
		printf("\n4.谢谢您的使用！\n");
		printf("\n 退出帮助请按0\n");
		int a;
		scanf("%d",&a);
		switch(a)
		{
			case 0:
			return;//退出当前函数
			default:
			printf("输入错误！");
		}
		}
}

void logo()//退出系统
{
	printf(" \n\n \n\n");
	printf("*********************************");
	printf("\n\n        欢迎下次使用           \n\n");
	printf("*********************************\n\n");
	return;
}

